/**
 * Copyright (c) 2006-2015, JGraph Ltd
 * Copyright (c) 2006-2015, Gaudenz Alder
 */
var mxStyleRegistry =
{
    /**
     * Class: mxStyleRegistry
     *
     * Singleton class that acts as a global converter from string to object values
     * in a style. This is currently only used to perimeters and edge styles.
     *
     * Variable: values
     *
     * Maps from strings to objects.
     */
    values: [],

    /**
     * Function: putValue
     *
     * Puts the given object into the registry under the given name.
     */
    putValue: function (name, obj) {
        mxStyleRegistry.values[name] = obj;
    },

    /**
     * Function: getValue
     *
     * Returns the value associated with the given name.
     */
    getValue: function (name) {
        return mxStyleRegistry.values[name];
    },

    /**
     * Function: getName
     *
     * Returns the name for the given value.
     */
    getName: function (value) {
        for (var key in mxStyleRegistry.values) {
            if (mxStyleRegistry.values[key] == value) {
                return key;
            }
        }

        return null;
    }
};

mxStyleRegistry.putValue(mxConstants.EDGESTYLE_ELBOW, mxEdgeStyle.ElbowConnector);
mxStyleRegistry.putValue(mxConstants.EDGESTYLE_ENTITY_RELATION, mxEdgeStyle.EntityRelation);
mxStyleRegistry.putValue(mxConstants.EDGESTYLE_LOOP, mxEdgeStyle.Loop);
mxStyleRegistry.putValue(mxConstants.EDGESTYLE_SIDETOSIDE, mxEdgeStyle.SideToSide);
mxStyleRegistry.putValue(mxConstants.EDGESTYLE_TOPTOBOTTOM, mxEdgeStyle.TopToBottom);
mxStyleRegistry.putValue(mxConstants.EDGESTYLE_ORTHOGONAL, mxEdgeStyle.OrthConnector);
mxStyleRegistry.putValue(mxConstants.EDGESTYLE_SEGMENT, mxEdgeStyle.SegmentConnector);

mxStyleRegistry.putValue(mxConstants.PERIMETER_ELLIPSE, mxPerimeter.EllipsePerimeter);
mxStyleRegistry.putValue(mxConstants.PERIMETER_RECTANGLE, mxPerimeter.RectanglePerimeter);
mxStyleRegistry.putValue(mxConstants.PERIMETER_RHOMBUS, mxPerimeter.RhombusPerimeter);
mxStyleRegistry.putValue(mxConstants.PERIMETER_TRIANGLE, mxPerimeter.TrianglePerimeter);
mxStyleRegistry.putValue(mxConstants.PERIMETER_HEXAGON, mxPerimeter.HexagonPerimeter);